6. code review方案细则

流程

每月按固定时间表进行,由项目负责人统筹,项目组成员、review评审人参与:

  1. 项目负责人review材料准备
  • 项目计划书
  • 代码合并
  • 文档准备(参考5. 文档规范,1.利用Sphix生成项目文档)
  • 更新内容简介(文档、代码)
  1. 对上次TODO内容跟进情况评分
  2. 对代码、文档、研发进度review,填写评分并列出TODO事项;
  3. 发送纪要邮件(评分文件、TODO事项、Review纪要)

评分方法

\[最终得分_{Month_i} = 0.1 \times 单元测试得分_{Month_i} + 0.2 \times 代码规范得分_{Month_i} + 0.3 \times 文档规范得分_{Month_i} + 0.4 \times 进度完成得分_{Month_{i}} + 跟进情况_{Month_{i+1}}\]

单元测试

在项目根目录test下提供核心模块功能需要提供单元测试脚本,每项功能至少包含3个不同的测试案例。每缺少一项扣5分,满分100分。

代码规范

代码规范满分100,包含基本规范和可理解性:

  • 基本规范(50/100)

利用自动化代码审查工具统计,无法给出合理原因的,每项扣2分;

```text

# 安装自动化审查工具 pip install pep8

# 检查文件或文件夹 pep8 file

# 检查并统计错误数量 pep8 –statistics file

# 某项目运行例子 13 E127 continuation line over-indented for visual indent 1 E128 continuation line under-indented for visual indent 2 E225 missing whitespace around operator 2 E261 at least two spaces before inline comment 3 E302 expected 2 blank lines, found 0 5 E402 module level import not at top of file 82 E501 line too long (89 > 79 characters) 7 W292 no newline at end of file 5 W391 blank line at end of file 2 W503 line break before binary operator

```

  • 可理解性(50/100)
  • 无意义/歧义变量名、函数名、类名每项扣2分
  • 接口函数、外部类无参数类型、默认值、可选项、含义说明每项扣5分
  • 接口函数、外部类无功能说明,每项扣5分

文档规范

满分100,包含完整性和有效性:

  • 文档完整性,满分50分,缺少一项扣10分;
  • 文档有效性,满分50分,评审人根据文档情况酌情打分;

进度完成

满分100,对比项目任务书计划,评审人按完成比例打分。

跟进情况

逐条审查上次review 代码及文档 TODO事项解决情况,根据评估的解决比例\(\alpha\)

\[跟进情况_{Month_{i+1}} = 0.8 \times \alpha \times (0.3 \times 代码规范扣分_{month_i} + 0.3 \times 文档规范扣分_{month_i})\]

评分结果记录

每次review评分记录表格:

项目 模块 开发者 review日期 单元测试 代码规范 文档规范 进度完成 跟进完成比例
demo run zhou 2019-09-03 90 90 90 90 0.9
                 
\begin{align*} 样例得分 &= 0.1 * 90 + 0.2 * 90 + 0.3 * 90 + 0.4 * 100 + 0.8 * 0.9 * (0.1 * 10 + 0.2 * 10 + 0.3 * 10)\\ & = 90 + 4.32 \end{align*}

绩效考核

绩效考核中,以模型研发为主的考核事项,其分值将以期间多次Review平均得分为基准,参照其他情况,在\(\pm 5\)浮动范围内进行打分。